home *** CD-ROM | disk | FTP | other *** search
- /* Copyright (C) 2000 Aladdin Enterprises. All rights reserved.
-
- This file is part of AFPL Ghostscript.
-
- AFPL Ghostscript is distributed with NO WARRANTY OF ANY KIND. No author or
- distributor accepts any responsibility for the consequences of using it, or
- for whether it serves any particular purpose or works at all, unless he or
- she says so in writing. Refer to the Aladdin Free Public License (the
- "License") for full details.
-
- Every copy of AFPL Ghostscript must include a copy of the License, normally
- in a plain ASCII text file named PUBLIC. The License grants you the right
- to copy, modify and redistribute AFPL Ghostscript, but only under certain
- conditions described in the License. Among other things, the License
- requires that the copyright notice and this notice be preserved on all
- copies.
- */
-
- /*$Id: smd5.c,v 1.3 2000/09/19 19:00:50 lpd Exp $ */
- /* MD5Encode filter */
- #include "memory_.h"
- #include "strimpl.h"
- #include "smd5.h"
-
- /* ------ MD5Encode ------ */
-
- private_st_MD5E_state();
-
- /* Initialize the state. */
- private int
- s_MD5E_init(stream_state * st)
- {
- stream_MD5E_state *const ss = (stream_MD5E_state *) st;
-
- md5_init(&ss->md5);
- return 0;
- }
-
- /* Process a buffer. */
- private int
- s_MD5E_process(stream_state * st, stream_cursor_read * pr,
- stream_cursor_write * pw, bool last)
- {
- stream_MD5E_state *const ss = (stream_MD5E_state *) st;
- int status = 0;
-
- if (pr->ptr < pr->limit) {
- md5_append(&ss->md5, pr->ptr + 1, pr->limit - pr->ptr);
- pr->ptr = pr->limit;
- }
- if (last) {
- if (pw->limit - pw->ptr >= 16) {
- md5_finish(&ss->md5, pw->ptr + 1);
- pw->ptr += 16;
- status = EOFC;
- } else
- status = 1;
- }
- return status;
- }
-
- /* Stream template */
- const stream_template s_MD5E_template = {
- &st_MD5E_state, s_MD5E_init, s_MD5E_process, 1, 16
- };
-